Remote access services can allow a user to access applications and data stored on a remote computing device over a network. Examples of remote access services can be Terminal Services™ (TS), which is a component of Microsoft® Windows® provided by the Microsoft® Corporation headquartered at Redmond, Wash. In addition, a remote access service can allow users to access one or more applications through a desktop associated with the remote computing device, such as a server. The desktop can be rendered on the client device, by modules such as a rendering module, based on rendering information sent by the remote computing device. The rendering information creates a surface on the client device and allows the rendering of the desktop within the surface.
Remote access services can allow exchange of information between the remote computing device and one or more client devices logged onto the remote computing device. Such information may include rendering information from the remote computing device for generating a surface on the client end. The surface can be understood to be a logical memory store or space onto which the graphical output can be displayed at the client devices.
Transmitting the rendering information from the remote computing device to the client device can be achieved by remoting at a primitive command level. This may involve the remote computing device sending primitive command level drawing commands to the client device. Based on the primitive command level drawing commands a graphical result can be generated at the remote client device. One or more rendering plug-ins at the server can send the primitive commands, and the rendering plug-ins at the client devices can render surfaces in accordance with the primitive commands.
New rendering extensions that support graphics interfaces such as GDI, WPF, and so on are being developed. The number of such extensions is expected to grow significantly, as new graphical interfaces become available. In existing TS scenarios, there is no uniform and clearly defined model to support new extensions. The complexity and cost of supporting increasing number and types of extensions would therefore increase in the near future.